package com.xhj.mybatis.logging.slf4j;

import com.xhj.mybatis.logging.Log;
import org.slf4j.Logger;

/**
 * Slf4jImpl
 *
 * @author XJks
 * @description Slf4jImpl 类实现了 Log 接口，用于将日志操作委托给 SLF4J 框架
 */
public class Slf4jImpl implements Log {

    /**
     * 声明一个 Logger 类型的成员变量，用于实际记录日志
     */
    private final Logger log;

    public static final Log GLOBAL_LOGGER = new Slf4jImpl(org.slf4j.LoggerFactory.getLogger(Slf4jImpl.class));

    /**
     * 构造方法，接收一个 Logger 实例并赋值给成员变量
     *
     * @param logger SLF4J 的 Logger 实例
     */
    public Slf4jImpl(Logger logger) {
        log = logger;
    }

    @Override
    public boolean isDebugEnabled() {
        // 调用 SLF4J 的 isDebugEnabled 方法
        return log.isDebugEnabled();
    }

    @Override
    public boolean isTraceEnabled() {
        // 调用 SLF4J 的 isTraceEnabled 方法
        return log.isTraceEnabled();
    }

    @Override
    public void error(String s, Throwable e) {
        // 调用 SLF4J 的 error 方法，参数为日志内容和异常对象
        log.error(s, e);
    }

    @Override
    public void error(String s) {
        // 调用 SLF4J 的 error 方法，只传递日志内容
        log.error(s);
    }

    @Override
    public void debug(String s) {
        // 调用 SLF4J 的 debug 方法
        log.debug(s);
    }

    @Override
    public void trace(String s) {
        // 调用 SLF4J 的 trace 方法
        log.trace(s);
    }

    @Override
    public void warn(String s) {
        // 调用 SLF4J 的 warn 方法
        log.warn(s);
    }

}
